package san.java.inherit_07;

/**
 * 继承: 对应显示生活中的is-a关系 ===>> 不要仅仅为了获得其他类中的某个功能呢个去继承
 *  继承的特性:
 *      1. 实际需求的子类在继承父类的基础上写自己特有代码
 *      2. 继承是要有逻辑关系的,比如学生是一个人, 狗不是人,所以不能继承Person
 *      3. 子类是对父类的扩展,是细化
 *      4. 子类不能访问父类中的私有的成员变量和方法
 *
 *  单继承与多继承
 *      1. java只支持单继承,即只能有一个唯一的父类
 *
 *  方法的重写:
 *      1. 重写只是重新编写方法体
 *      2. 重写方法不能使用比被重写更严格的访问权限
 *      3. 重写方法必须同时为static或非static
 *      4. 子类方法抛出的异常不能大于父类被重写方法的异常
 *      5. 不能重写父类的私有方法
 *
 *  父子类与访问修饰符:
 *      1. 如果子类和父类在同一个包下,那么对于父类的成员修饰符只要不是private那就都可以使用
 *      2. 如果不在同一个包下,则只能使用public和protected
 *
 *  关键字super:  实例代码见Monitor
 *      在java中使用super来调用父类的指定操作:
 *          1. super可用于访问父类中定义的属性
 *          2. super可用于调用父类中定义的成员方法
 *          3. super可用于在子类构造方法中调用父类的构造器
 *
 *      调用父类的构造器:
 *          1. 子类所有的构造器默认都会访问父类中空参数的构造器
 *          2. 当父类中没有空参数的构造器时,子类构造器必须通过this(参数列表)或者super(参数列表)语句
 *              指定调用本类或者父类中相应的构造器,且必须放在构造器第一行.
 *          3. 如果子类构造器中既未显示调用父类或子类的构造器,弗雷中又没有无参构造器,则编译出错.
 *
 *      this和super的区别:
 *          No.         区别点                     this                super
 *          1           访问属性          访问本类中的属性,如果本类中    访问父类中的属性
 *                                      没有此属性则从父类中继续查找
 *
 *          2           调用方法              访问本类中的方法       直接访问父类中的方法
 *
 *          3           调用构造器          调用本类构造器,必须放在      调用父类构造器,必须放在子类
 *                                            构造器首行                构造器的首行
 *
 *          4.             特殊                表示当前对象                 无此概念
 *
 *
 *
 *      注意:
 *          1. 尤其当子类出现同名成员时,可以使用super进行区分
 *          2. super的追溯不仅限于直接父类(爷爷, 外祖父, 祖宗十八代都行)
 *          3. super和this的用法相像,this代表本类对象的引用,super代表父类的内存空间标识
 *          4. 在父类只有有参构造可以使用的时候,子类必须显示的构建一个有参构造,
 *              并且调用弗雷的构造函数,并写在第一行
 *
 */

public class Inherit {

}
